home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / shells / kiss-0.11 / kiss-0 / kiss / src / listoutput.c < prev    next >
C/C++ Source or Header  |  1995-03-23  |  1KB  |  68 lines

  1. #include "kiss.h"
  2.  
  3. int
  4.     nentries = 0;
  5. char
  6.     **entry = NULL;
  7.  
  8. void listoutput (char *buf)
  9. {
  10.     entry = xrealloc (entry, (nentries + 1) * sizeof (char *));
  11.     entry [nentries++] = xstrdup (buf);
  12. }
  13.  
  14. void listoutputflush ()
  15. {
  16.     /* we can assume that we're in multicolumn mode now */
  17.     register int
  18.     maxlen = 0,
  19.     nperline,
  20.     printed = 0,
  21.     j,
  22.     i;
  23.  
  24.     /* nothing to do? nogo. */
  25.     if (! nentries)
  26.     return;
  27.  
  28.     /* find longest entry */
  29.     for (i = 0; i < nentries; i++)
  30.     {
  31.     register int
  32.         len = strlen (entry [i]);
  33.     if (len > maxlen)
  34.         maxlen = len;
  35.     }
  36.  
  37.     /* allow for extra space */
  38.     maxlen++;
  39.  
  40.     nperline = 80 / maxlen;
  41.     if (! nperline)
  42.     nperline++;
  43.  
  44.     for (i = 0; i < nentries; i++)
  45.     {
  46.     printf ("%s", entry [i]);
  47.     for (j = strlen (entry [i]); j < maxlen; j++)
  48.         putchar (' ');
  49.     printed++;
  50.  
  51.     if (printed == nperline)
  52.     {
  53.         putchar ('\n');
  54.         printed = 0;
  55.     }
  56.     }
  57.  
  58.     if (printed)
  59.     putchar ('\n');
  60.  
  61.     for (i = 0; i < nentries; i++)
  62.     free (entry [i]);
  63.     free (entry);
  64.  
  65.     entry = NULL;
  66.     nentries = 0;
  67. }
  68.